package com.linzm.leetcode.primary.exercises3_20230122;

import java.util.HashMap;

/**
 * @Author zimingl
 * @Date 2023/1/22 14:27
 * @Description: 最多可以摧毁的敌人城堡数目
 */
public class Demo2_2511 {
    /**
     * 1 到 -1 区间 0的数量
     * 输入：forts = [1,0,0,-1,0,0,0,0,1]
     * 输出：4
     * 解释：
     * - 将军队从位置 0 移动到位置 3 ，摧毁 2 个敌人城堡，位置分别在 1 和 2 。
     * - 将军队从位置 8 移动到位置 3 ，摧毁 4 个敌人城堡。
     * 4 是最多可以摧毁的敌人城堡数目，所以我们返回 4 。
     */
    public static void main(String[] args) {
        Demo2_2511 demo2_2511 = new Demo2_2511();
        int[] forts = {1, 0, -1, 0, 0, 1, 1, 1, -1, -1, -1};
        int captureForts = demo2_2511.captureForts(forts);
        System.out.println(captureForts);
    }

    private int captureForts(int[] forts) {
        int max = 0, start = 0, end = 0;
        HashMap<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < forts.length; i++) {
            if (forts[i] == 1) {
                start = forts[i];
                map.put(forts[i], i);
            }
            if (forts[i] == -1) {
                end = forts[i];
                map.put(forts[i], i);
            }
            if (start * end == -1) {
                max = Math.max(max, Math.abs(map.get(end) - map.get(start)));
                if (map.get(end) > map.get(start)) {
                    start = 0;
                } else {
                    end = 0;
                }
            }
        }
        return max > 0 ? max - 1 : 0;
    }
}
